<?php
require_once("../Datos/Selector.php");
require_once("../Datos/SubConsulta.php");
require_once("../Datos/Tablas/Tbl_ec_pedidos.php");
require_once("../Datos/Tablas/Tbl_ec_clientes.php");
require_once("../Datos/Selectores/Sel_Articulos_Pedido.php");
require_once("../Datos/Selectores/Sel_Estado_Pedido.php");
require_once("../Datos/Tablas/Tbl_ec_formas_pago.php");
require_once("../Datos/Tablas/Tbl_ec_ventas.php");
require_once("../Datos/Tablas/Tbl_ec_usuarios.php");
require_once("../Datos/Tablas/Tbl_ec_articulos_pedido.php");

class Sel_Pedidos extends Selector{

	function Sel_Pedidos(&$conexion){
		$this->Selector($conexion);
		$this->estEsDistinct(1);

		$this->Nombre = "Pedidos";
		$this->estTablaBase(new Tbl_ec_pedidos($conexion, ''));

        $relacionada = new Tbl_ec_clientes($conexion, '');
		$this->agregarTablaRelacionada($relacionada, 'INNER JOIN');
		$this->agregarCampoJunta($this->tablaBase->obtCampo('ped_cliente'), $this->obtCampoRelacionado('ec_clientes', 'cli_id'), '=');
		
		$relacionada = new Tbl_ec_articulos_pedido($conexion, '');
		$this->agregarTablaRelacionada($relacionada, 'INNER JOIN');
		$this->agregarCampoJunta($this->tablaBase->obtCampo('ped_id'), $this->obtCampoRelacionado('ec_articulos_pedido', 'ap_pedido'), '=');
        
		$relacionada = new SubConsulta(new Sel_Articulos_Pedido($conexion), '');
		$this->agregarTablaRelacionada($relacionada, 'INNER JOIN');
		$this->agregarCampoJunta($this->tablaBase->obtCampo('ped_id'), $this->obtCampoRelacionado('Articulos_Pedido', 'Codigo_Grupo'), '=');
		
		$relacionada = new SubConsulta(new Sel_Estado_Pedido($conexion), 'estado_pedido');
		$this->agregarTablaRelacionada($relacionada, 'INNER JOIN');
		$this->agregarCampoJunta($this->tablaBase->obtCampo('ped_id'), $this->obtCampoRelacionado('estado_pedido', 'id_estado'), '=');
        
		$relacionada = new Tbl_ec_formas_pago($conexion, '');
		$this->agregarTablaRelacionada($relacionada, 'INNER JOIN');
		$this->agregarCampoJunta($this->tablaBase->obtCampo('ped_forma_pago'), $this->obtCampoRelacionado('ec_formas_pago', 'fp_id'), '=');
        
		$relacionada = new Tbl_ec_usuarios($conexion, 'Cobradores');
		$this->agregarTablaRelacionada($relacionada, 'INNER JOIN');
		$this->agregarCampoJunta($this->tablaBase->obtCampo('ped_cobrador'), $this->obtCampoRelacionado('Cobradores', 'u_id'), '=');
		
		$relacionada = new Tbl_ec_ventas($conexion, 'Ventas');
		$this->agregarTablaRelacionada($relacionada, 'LEFT JOIN');
		$this->agregarCampoJunta($this->tablaBase->obtCampo('ped_id'), $this->obtCampoRelacionado('Ventas', 'ven_pedido'), '=');

		$campo = $this->tablaBase->obtCampo('ped_id');
		$campo->estAlias('Codigo');
		$this->agregarCampoVisible($campo);
		
		$campo = $this->tablaBase->obtCampo('ped_fecha');
		$campo->estAlias('Fecha');
		$campo->estEsOrden('DESC');
		$this->agregarCampoVisible($campo);

		$tabla = $this->obtTabla('ec_clientes');
		$funcion = new Funcion('Cliente', 'Concat', $tabla);
		$funcion->estNoIngresar(0);
		$campo = $this->obtCampoRelacionado('ec_clientes', 'cli_apellido');
		$funcion->agregarCampo($campo);

		$funcion->agregarTexto(', ');

		$campo = $this->obtCampoRelacionado('ec_clientes', 'cli_nombre');
		$funcion->agregarCampo($campo);

		$this->agregarCampoVisible($funcion);
		
		$campo = $this->obtCampoRelacionado('Articulos_Pedido', 'Articulos');
		$campo->estOcultoDetalle(1);
		$campo->estEsBase(1);
		$this->agregarCampoVisible($campo);
		
		$campo = $this->obtCampoRelacionado('Articulos_Pedido', 'Articulo');
		$campo->estTipo("lista-multiple");
		$campo->estNoIngresar(1);
		$campo->estOcultoListado(1);
		$this->agregarCampoVisible($campo);
		
		$campo = $this->obtCampoRelacionado('ec_formas_pago', 'fp_descripcion');
		$campo->estAlias('Forma de Pago');
		$this->agregarCampoVisible($campo);
		
		$campo = $this->tablaBase->obtCampo('ped_cant_pagos');
		$campo->estAlias('Cantidad de Pagos');
		$this->agregarCampoVisible($campo);
		
		$campo = $this->tablaBase->obtCampo('ped_vendedor');
		$campo->estOcultoListado(1);
		$campo->estOcultoDetalle(1);
		$this->agregarCampoVisible($campo);
		
		$this->agregarCampoVisible($campo);

		$tabla = $this->obtTabla('Cobradores');
		$funcion = new Funcion('Cobrador', 'Concat', $tabla);
		$campo = $this->obtCampoRelacionado('Cobradores', 'u_apellido');
		$funcion->agregarCampo($campo);

		$funcion->agregarTexto(', ');

		$campo = $this->obtCampoRelacionado('Cobradores', 'u_nombre');
		$funcion->agregarCampo($campo);

		$this->agregarCampoVisible($funcion);
		
		$campo = $this->tablaBase->obtCampo('ped_monto');
		$campo->estAlias('Monto');
		$this->agregarCampoVisible($campo);

		$campo = $this->tablaBase->obtCampo('ped_comentario');
		$campo->estAlias('Comentario');
		$campo->estOcultoListado(1);
		$this->agregarCampoVisible($campo);
		
		
		$tabla = $this->tablaBase;
		$funcion = new Funcion('Estado', 'IF', $tabla);
		$funcion->agregarExpresion("estado_pedido.Negado = 'Si', 'Negado', estado_pedido.Aceptado");
		
		$funcion->estEsBase(1);
		$funcion->estEsReadOnly(1);
		$funcion->estOcultoDetalle(1);
		$this->agregarCampoVisible($funcion);
		
		$campo = $this->tablaBase->obtCampo('ped_fot_dni_t');
		$campo->estAlias("DNI del Titular");
		$campo->estOcultoListado(1);
		$this->agregarCampoVisible($campo);
		
		$campo = $this->tablaBase->obtCampo('ped_fot_dni_c');
		$campo->estAlias("DNI del Conyuge");
		$campo->estOcultoListado(1);
		$this->agregarCampoVisible($campo);
		
		$campo = $this->tablaBase->obtCampo('ped_fot_rec_serv');
		$campo->estAlias("Recibo de Servicios");
		$campo->estOcultoListado(1);
		$this->agregarCampoVisible($campo);
		
		$campo = $this->tablaBase->obtCampo('ped_fot_rec_imp_inm');
		$campo->estAlias("Rec. Impuesto Inmoviliario");
		$campo->estOcultoListado(1);
		$this->agregarCampoVisible($campo);
		
		$campo = $this->tablaBase->obtCampo('ped_fot_tva');
		$campo->estAlias("Tarjeta Verde");
		$campo->estOcultoListado(1);
		$this->agregarCampoVisible($campo);
		
		$campo = $this->tablaBase->obtCampo('ped_fot_rs');
		$campo->estAlias("Recibo de Sueldo");
		$campo->estOcultoListado(1);
		$this->agregarCampoVisible($campo);
		
		$campo = $this->tablaBase->obtCampo('ped_min_cuotas');
		$campo->estAlias("Min. Cuotas");
		$campo->estOcultoListado(1);
		$campo->estEsReadOnly(1);
		$this->agregarCampoVisible($campo);
		
		$campo = $this->tablaBase->obtCampo('ped_min_monto');
		$campo->estAlias("Min. Monto");
		$campo->estOcultoListado(1);
		$campo->estEsReadOnly(1);
		$this->agregarCampoVisible($campo);
		
		$campo = $this->tablaBase->obtCampo('ped_com_negacion');
		$campo->estAlias("Comentario Negacion");
		$campo->estOcultoListado(1);
		$campo->estEsReadOnly(1);
		$this->agregarCampoVisible($campo);
		
		if($_SESSION['login']['log_nivel_acceso'] < 3){
			$this->estCondicion("ped_vendedor = " . $_SESSION['login']['log_id']);
		}
		
		$this->txtConsulta = $this->GenerarConsulta();
 }
 
 function Ejecutar($post){
			$i=0;
			foreach($this->arrCamposVisibles as &$campo){
				if($campo->obtEsBase() == 1){
					if($campo->obtEsReadOnly() == 0 && $campo->obtNoIngresar() == 0){
						//var_dump($campo->obtAlias());
						//var_dump($post[$i]);
						if(isset($post[$i])){
							$campo->estValor($post[$i]);
						}
					}
				}
				else{	
					if($campo->obtNoIngresar() == 0){
					foreach($_SESSION[$campo->obtNombre()][$post[$i]] as $NombreJunta => $ValorJunta){
						//var_dump($NombreJunta);
						//var_dump($ValorJunta);
						foreach($this->arrCamposJunta as &$fila){
							if($fila['junta']->obtNombre() == $NombreJunta && 
							   $fila['junta']->obtAliasTabla() == $campo->obtAliasTabla())
							   {
									$fila['base']->estValor($ValorJunta);
							   }
						}
					}
					}
				}
				$i++;
			}
			
			if(count($_SESSION[$this->Nombre]) > 0 && $this->obtEsAgrupado() == false){
				
				foreach($_SESSION[$this->Nombre] as $Clave){
					$arrNombresClaves = array_keys($Clave);
					if(isset($this->tablaBase->arrPropiedades[$arrNombresClaves[0]])){
						$this->tablaBase->estPropiedad($arrNombresClaves[0], $Clave[$arrNombresClaves[0]]);
					}
					else{
						foreach($this->arrCamposVisibles as $visible){
							if($visible->obtAlias() == $arrNombresClaves[0]){
								$visible->estValor($Clave[$arrNombresClaves[0]]);
							}
						}
					}
				}
			}
			
			$this->Conexion->IniciarTransaccion();
			if($post['op'] == 'agregar'){
				$id = $this->tablaBase->Insertar();
				$row_id = mysql_fetch_array($id);
				$arrArticulos = explode(",", $post['4']);
				
				$tabla = $this->obtTabla('ec_articulos_pedido');
			
				foreach($arrArticulos as $art_id){					
					$tabla->set_ap_pedido($row_id[0]);
					$tabla->set_ap_articulo($art_id);
					$tabla->Insertar();
				}
			}
			if($post['op'] == 'borrar'){
				$tabla = $this->obtTabla('ec_articulos_pedido');
				$consulta[0] = "DELETE FROM ec_articulos_pedido WHERE ap_pedido = ".$post[0];
				$this->Conexion->Ejecutar($consulta);
				$this->tablaBase->Borrar();
			}
			if($post['op'] == 'modificar'){
				$this->tablaBase->Modificar();
				
				$arrArticulos = explode(",", $post['4']);
				
				$tabla = $this->obtTabla('ec_articulos_pedido');
				$consulta[0] = "DELETE FROM ec_articulos_pedido WHERE ap_pedido = ".$post[0];
				$this->Conexion->Ejecutar($consulta);
				
				foreach($arrArticulos as $art_id){					
					$tabla->set_ap_pedido($post[0]);
					$tabla->set_ap_articulo($art_id);
					$tabla->Insertar();
				}
			}
			
			if($post['op'] == 'modificar'){
			$consulta[0] = "UPDATE ec_pedidos SET 
							ped_negar = '0'  
							WHERE ec_pedidos.ped_id = " . $_POST['0'];
			$this->Conexion->Ejecutar($consulta);
			}	
			$this->Conexion->ConfirmarTransaccion();
	}

 
}
?>
